// 1. 基本用法
type num = number

let price: num
price = 100

// 2. 联合类型
type Status = number | string
type Gender = '男' | '女'

function printStatus(status: Status): void {
  console.log(status)
}

function logGender(str: Gender): void {
  console.log(str)
}

printStatus(404)
printStatus('200')
printStatus('501')

logGender('男')
logGender('女')

// 3. 交叉类型
// 面积
type Area = {
  heignt: number;   // 高
  width: number;    // 宽
};

// 地址
type Address = {
  num: number;  // 楼号
  cell: number; // 单元号
  room: string; // 房间号
}

// 定义类型 House, 且 House 是 Area 和 Address 总成的交叉类型
type House = Area & Address
type Demo = number & string

const house: House = {
  heignt: 180,
  width: 75,
  num: 6,
  cell: 3,
  room: '702'
}

let x: Demo // x: never